<html>
<body>
Reports variable and method return types that can be changed to a more abstract (weaker) type.
This allows making the code more abstract, hence more reusable.
<p>Example:</p>
<pre><code>
  // Type of parameter can be weakened to java.util.List
  void processList(ArrayList&lt;String&gt; list) {
    if (list.isEmpty()) return;
    System.out.println("Processing");
    for (String s : list) {
      System.out.println("String: " + s);
    }
  }
</code></pre>
<!-- tooltip end -->
<p>
  Enable the <b>Only weaken to an interface</b> checkbox below
  to only report a problem when the type can be weakened to an interface type.
</p>
<p>
  Enable the <b>Do not suggest weakening variable declared as 'var'</b> checkbox below
  to prevent reporting on local variables declared using the 'var' keyword (Java 10+)
</p>
<p>
<b>Stop classes</b> are intended to prevent weakening to classes
lower than stop classes, even if it is possible.
In some cases, this may improve readability.
</body>
</html>
